package com.aiapphub.SystemCode.controller;

import com.aiapphub.BaseCode.common.ResponseResult;
import com.aiapphub.BaseCode.entity.SsoUser;
import com.aiapphub.BaseCode.exception.SystemException;
import com.aiapphub.SystemCode.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 系统用户控制器 - 提供当前登录用户信息接口
 */
@RestController
@Slf4j
@CrossOrigin
@RequestMapping("/api/system/user")
public class SystemUserController {

    @Autowired
    private UserService userService;

    /**
     * 获取当前登录用户信息
     * @return 用户信息
     */
    @GetMapping("/current")
    public ResponseResult<SsoUser> getCurrentUser() {
        try {
            SsoUser currentUser = userService.getCurrentUser();
            log.debug("获取当前用户信息成功: {}", currentUser.getLoginName());
            return ResponseResult.okResult(currentUser);
        } catch (SystemException e) {
            // 捕获系统异常（包括未登录异常）
            log.warn("获取当前用户信息失败: {}", e.getMsg());
            return ResponseResult.errorResult(e.getCode(), e.getMsg());
        } catch (Exception e) {
            log.error("获取当前用户信息失败", e);
            return ResponseResult.errorResult(500, "获取用户信息失败: " + e.getMessage());
        }
    }

    /**
     * 获取当前登录用户ID
     * @return 用户ID
     */
    @GetMapping("/current/id")
    public ResponseResult<String> getCurrentUserId() {
        try {
            String userId = userService.getCurrentUserId();
            log.debug("获取当前用户ID: {}", userId);
            return ResponseResult.okResult(userId);
        } catch (SystemException e) {
            // 捕获系统异常（包括未登录异常）
            log.warn("获取当前用户ID失败: {}", e.getMsg());
            return ResponseResult.errorResult(e.getCode(), e.getMsg());
        } catch (Exception e) {
            log.error("获取当前用户ID失败", e);
            return ResponseResult.errorResult(500, "获取用户ID失败: " + e.getMessage());
        }
    }
}

